package com.ilxqx.generator.data;

import com.ilxqx.generator.parser.Table;
import com.ilxqx.generator.parser.TableField;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;

import java.util.Map;

/**
 * 数据库与java特定类型转换处理
 * @author venus
 */
@ProcessorOrder(3)
@Slf4j
public class TypeConverterDataModelProcessor implements DataModelProcessor {

	/**
	 * 类型转换规则名称
	 */
	private static final String TYPE_CONVERT_FLAG = "typeConvert";

	/**
	 * 转换目标类的参数名称
	 */
	private static final String PARAMETER_FLAG = "type";

	/**
	 * 数据模型处理
	 *
	 * @param dataModel 数据模型(其中table为表对象，里面包含你想要的信息)
	 */
	@Override
	public void process(Map<String, Object> dataModel) {
		Table table = (Table) dataModel.get("table");
		for (TableField field : table.getFields()) {
			if (field.getRules().match(TYPE_CONVERT_FLAG)) {
				String type = field.getRules().getRule(TYPE_CONVERT_FLAG).getParam(PARAMETER_FLAG);
				if (StringUtils.isBlank(type)) {
					// 直接跳过
					continue;
				}

				field.setType(type);
			}
		}
	}

}
